<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Partitioned Global Address Space</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Partitioned_Global_Address_Space"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Partitioned_Global_Address_Space rootpage-Partitioned_Global_Address_Space skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Partitioned Global Address Space</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><span lang="en"><b>Partitioned Global Address Space</b></span> (<b>PGAS</b>) ist ein Programmiermodell speziell für <a href="Mehrprozessorsystem" title="Mehrprozessorsystem">Mehrprozessorsysteme</a> und <a href="Massively_Parallel_Processing" title="Massively Parallel Processing">massiv parallele Rechner</a>. Dabei wird der globale Adressbereich des <a href="Arbeitsspeicher" title="Arbeitsspeicher">Arbeitsspeichers</a> logisch unterteilt. Jeder <a href="Prozessor" title="Prozessor">Prozessor</a> bekommt jeweils einen dieser Adressbereiche als lokalen Speicher zugeteilt. Trotzdem können alle Prozessoren auf jede Speicherzelle zugreifen, wobei auf den lokalen Speicher mit wesentlich höherer Geschwindigkeit zugegriffen werden kann als auf den von anderen Prozessoren.<sup id="cite_ref-PGASLanguages_1-0" class="reference"><a href="#cite_note-PGASLanguages-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Ein wichtiger Vorteil der PGAS-Sprachen ist die einfach formulierbare Möglichkeit, große Datenmengen, die von einem einzelnen Prozessor nicht mehr gespeichert werden können, in den verteilten Speichern vieler Prozessoren unterzubringen, ohne dass die einheitliche Datenbeschreibung verloren geht.
</p><p>Der Programmierer steht vor der Aufgabe, maximale Leistung des Programms durch geeignete Definition und Zuordnung der Programmvariablen zu erzielen. Dabei ist insbesondere eine gleichmäßige Lastverteilung auf alle beteiligten Prozessoren zu achten. Ein nur mit PGAS-Mitteln geschriebenes Programm ist manchmal sehr schwer zu überschauen, da die Zuordnung der Variablen im Programm nicht explizit auftaucht, sondern nur implizit nach festgelegten Regeln erfolgt. Deshalb gibt es in PGAS-Sprachen zusätzliche Möglichkeiten der Synchronisierung der Prozesse.
</p>
<div class="mw-heading mw-heading2"><h2 id="Eigenschaften">Eigenschaften</h2></div>
<p>Ein PGAS-System hat folgende Eigenschaften:
</p>
<ul><li>Es besteht aus einer Menge von Prozessoren mit lokalen Speicher. Teile dieses lokalen Speichers können als <i>privat</i> deklariert werden, so dass sie nicht für andere Prozessoren sichtbar sind</li>
<li>Es hat einen Mechanismus um wenigstens einen Teil des lokalen Speichers der Prozessoren mit anderen Prozessoren zu <a href="Shared_Memory" title="Shared Memory">teilen</a>. Dies führt zwangsläufig zu Verzögerungen beim Speicherzugriff, abhängig von der Zugriffsmethode und dem Ort an dem die geteilte Speicherzelle liegt</li>
<li>Jede geteilte Speicherzelle ist mit einem Thread assoziiert (engl. <span lang="en"><i>affinity</i></span>), entweder lokal, so dass der Zugriff schnell erfolgen kann, oder entfernt, so dass der Zugriff länger dauert. Diese Assoziation zeigt sich auch dem Programmierer, so dass dieser performant programmieren kann.<sup id="cite_ref-PGASLanguages_1-1" class="reference"><a href="#cite_note-PGASLanguages-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Programmiersprachen">Programmiersprachen</h2></div>
<p>Alle PGAS-Programmiersprachen enthalten die oben genannten Eigenschaften, auch wenn diese unterschiedlich umgesetzt wurden. Jede Sprache erlaubt es zwischen privatem und geteiltem Speicher zu unterscheiden und außerdem die Assoziation der geteilten Speicherzellen zu bestimmen. Manche PGAS-Sprachen bieten verteilte <a href="Schleife_(Programmierung)" title="Schleife (Programmierung)">Schleifen</a> oder spezielle Syntax an, um auf entfernte Daten zuzugreifen.<sup id="cite_ref-PGASLanguages_1-2" class="reference"><a href="#cite_note-PGASLanguages-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Die Prozessoren führen normale <a href="Thread_(Informatik)" title="Thread (Informatik)">Threads</a> aus. Die Synchronisierung beim Variablenzugriff erfolgt implizit; explizite Synchronisierung durch den Programmierer ist möglich.
</p>
<ul><li><a href="Unified_Parallel_C" title="Unified Parallel C">Unified Parallel C</a> (UPC) hat sich von <a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a> abgespalten. Es erweitert C um geteilte Arrays und geteilte Pointer, die den globalen Adressraum adressieren. UPC hat außerdem eine <i>forall</i>-Schleife, die Iterationen abhängig von der Assoziation ausführt.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Co-array_Fortran" title="Co-array Fortran">Co-array Fortran</a> (CAF) basiert auf <a href="Fortran" title="Fortran">Fortran</a>. Es erweitert Fortran-Arrays, so dass auch andere Prozesse auf sie zugreifen können. Eine Variante von Coarray Fortran ist in Fortran 2008 enthalten. Sie ist die einzige PGAS-Sprache, die eine <a href="Internationale_Organisation_f%C3%BCr_Normung" title="Internationale Organisation für Normung">ISO</a>-Zertifizierung erhalten hat.</li>
<li>Titanium basiert auf <a href="Java_(Programmiersprache)" title="Java (Programmiersprache)">Java</a>. Sie bietet <a href="Single-Program_Multiple-Data" title="Single-Program Multiple-Data">SPMD</a>-Parallelismus, <a href="Zeiger_(Informatik)" title="Zeiger (Informatik)">Pointer</a> zu geteilten Daten und ein erweitertes Modell für verteilte Arrays.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Fortress_(Programmiersprache)" title="Fortress (Programmiersprache)">Fortress</a> unterstützt parallele Programmierung sowohl für Mehrkernprozessoren als auch für Supercomputer. Fortress hat eine mathematische Syntax, nutzt Parallelismus wann immer möglich und ist eine Framework zur Erstellung von <a href="Dom%C3%A4nenspezifische_Sprache" title="Domänenspezifische Sprache">domänenspezifischen Sprachen</a>.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup></li>
<li>Chapel wird von der Firma <a href="Cray" title="Cray">Cray</a> entwickelt. Sie verfolgt folgende vier Ziele: <a href="Multithreading" title="Multithreading">Multithreading</a>, Locality-Awareness, <a href="Objektorientierung" title="Objektorientierung">Objektorientierung</a> und <a href="Generische_Programmierung" title="Generische Programmierung">generische Programmierung</a>.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup></li>
<li><a href="X10_(Programmiersprache)" title="X10 (Programmiersprache)">X10</a> gibt es in zwei Implementierungen, einmal basierend auf Java, einmal basierend auf <a href="C%2B%2B" title="C++">C++</a>. X10 bietet <a href="Task" class="mw-disambig" title="Task">Task</a>- und Datenparallelismus. Die wesentliche Eigenschaft von X10 ist die asynchrone Taskverwaltung.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.pgas.org/">PGAS Webseite</a> auf pgas.org</li>
<li><a rel="nofollow" class="external text" href="http://upc.gwu.edu/tutorials/tutorials_sc2003.pdf"><i>Programming in the Partitioned Global Address Space Model</i></a> auf upc.gwu.edu (2003; PDF-Datei; 964 kB)</li>
<li><a rel="nofollow" class="external text" href="http://www.sdsc.edu/PMaC/GeoScience_Workshop/Publications/Yelick.pdf"><i>Performance and Productivity Opportunities using Global Address Space Programming Models</i></a> auf sdsc.edu (2006; PDF-Datei; 518 kB)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-PGASLanguages-1"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-PGASLanguages_1-0">a</a></sup> <sup><a href="#cite_ref-PGASLanguages_1-1">b</a></sup> <sup><a href="#cite_ref-PGASLanguages_1-2">c</a></sup></span> <span class="reference-text">George Almasi: <cite style="font-style:italic">PGAS (Partitioned Global Address Space) Languages</cite>. In: <cite style="font-style:italic">Encyclopedia of Parallel Computing</cite>. Springer US, 2011, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>1539–1545</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1007/978-0-387-09766-4_2091">10.1007/978-0-387-09766-4_2091</a></span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Partitioned+Global+Address+Space&rft.atitle=PGAS+%28Partitioned+Global+Address+Space%29+Languages&rft.au=George+Almasi&rft.btitle=Encyclopedia+of+Parallel+Computing&rft.date=2011&rft.doi=10.1007%2F978-0-387-09766-4_2091&rft.genre=book&rft.pages=1539-1545&rft.pub=Springer+US" style="display:none"> </span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">Thomas Rauber, Gudula Rünger: <cite style="font-style:italic">Parallele Programmierung</cite>. 3. Auflage. Springer, Berlin Heidelberg 2012, ISBN 978-3-642-13604-7, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>375–386</span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Partitioned+Global+Address+Space&rft.au=Thomas+Rauber%2C+Gudula+R%C3%BCnger&rft.btitle=Parallele+Programmierung&rft.date=2012&rft.edition=3&rft.genre=book&rft.isbn=9783642136047&rft.pages=375-386&rft.place=Berlin+Heidelberg&rft.pub=Springer" style="display:none"> </span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text">Kathy Yelick, Luigi Semenzato, Geoff Pike et al.: <cite style="font-style:italic">Titanium: A High-Performance Java Dialect</cite>. In: <cite style="font-style:italic">Concurrency: Practice and Experience</cite>. <span style="white-space:nowrap">Band<span style="display:inline-block;width:.2em"> </span>10</span>, <span style="white-space:nowrap">Nr.<span style="display:inline-block;width:.2em"> </span>11-13</span>, 1998, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>825–836</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1002/%28SICI%291096-9128%28199809%2F11%2910%3A11%2F13%3C825%3A%3AAID-CPE383%3E3.0.CO%3B2-H">10.1002/(SICI)1096-9128(199809/11)10:11/13<825::AID-CPE383>3.0.CO;2-H</a></span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rfr_id=info:sid/de.wikipedia.org:Partitioned+Global+Address+Space&rft.atitle=Titanium%3A+A+High-Performance+Java+Dialect&rft.au=Kathy+Yelick%2C+Luigi+Semenzato%2C+Geoff+Pike+et+al.&rft.date=1998&rft.doi=10.1002%2F%28SICI%291096-9128%28199809%2F11%2910%3A11%2F13%3C825%3A%3AAID-CPE383%3E3.0.CO%3B2-H&rft.genre=journal&rft.issue=11-13&rft.jtitle=Concurrency%3A+Practice+and+Experience&rft.pages=825-836&rft.volume=10" style="display:none"> </span></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text">GuyL., Jr. Steele, Eric Allen, David Chase et al.: <cite style="font-style:italic">Fortress (Sun HPCS Language)</cite>. In: <cite style="font-style:italic">Encyclopedia of Parallel Computing</cite>. 2011, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>718–735</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1007/978-0-387-09766-4_190">10.1007/978-0-387-09766-4_190</a></span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Partitioned+Global+Address+Space&rft.atitle=Fortress+%28Sun+HPCS+Language%29&rft.au=GuyL.%2C+Jr.+Steele%2C+Eric+Allen%2C+...&rft.btitle=Encyclopedia+of+Parallel+Computing&rft.date=2011&rft.doi=10.1007%2F978-0-387-09766-4_190&rft.genre=book&rft.pages=718-735" style="display:none"> </span></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a></span> <span class="reference-text">David Callahan, Bradford L. Chamberlain, Hans P. Zima: <cite style="font-style:italic">David Callahan, Bradford L. Chamberlain, Hans P. Zima</cite>. In: <cite style="font-style:italic">Ninth International Workshop on High-Level Parallel Programming Models and Supportive Environments</cite>. 2004, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>52--60</span>, <a href="Digital_Object_Identifier" title="Digital Object Identifier">doi</a>:<span class="uri-handle" style="white-space:nowrap"><a rel="nofollow" class="external text" href="https://doi.org/10.1109/HIPS.2004.1299190">10.1109/HIPS.2004.1299190</a></span>.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Partitioned+Global+Address+Space&rft.atitle=David+Callahan%2C+Bradford+L.+Chamberlain%2C+Hans+P.+Zima&rft.au=David+Callahan%2C+Bradford+L.+Chamberlain%2C+Hans+P.+Zima&rft.btitle=Ninth+International+Workshop+on+High-Level+Parallel+Programming+Models+and+Supportive+Environments&rft.date=2004&rft.doi=10.1109%2FHIPS.2004.1299190&rft.genre=book&rft.pages=52--60" style="display:none"> </span></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text">Vijay Saraswat, Bard Bloom, Igor Peshansky, Olivier Tardieu, David Grove: <cite style="font-style:italic">X10 Language Specification Version 2.3</cite>. 2013, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em"> </span>1–282</span> (<a rel="nofollow" class="external autonumber" href="http://x10.sourceforge.net/documentation/languagespec/x10-latest.pdf">[1]</a> [PDF; <span style="white-space:nowrap">1,6<span style="display:inline-block;width:.2em"> </span>MB</span>; abgerufen am 28. August 2013]).<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:Partitioned+Global+Address+Space&rft.au=Vijay+Saraswat%2C+Bard+Bloom%2C+Igor+Peshansky%2C+...&rft.btitle=X10+Language+Specification+Version+2.3&rft.date=2013&rft.genre=book&rft.pages=1-282" style="display:none"> </span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-02-10" href="https://de.wikipedia.org/wiki/?title=Partitioned_Global_Address_Space&oldid=253206426">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>